<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Curses (programming library)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Curses_(programming_library)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/mediawiki.page.gallery.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Curses_programming_library rootpage-Curses_programming_library skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main">curses (programming library)</span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">curses</th></tr><tr><td colspan="2" class="infobox-image logo"></td></tr><tr><td colspan="2" class="infobox-image logo"><div class="infobox-caption">Live Upgrade (lu) command, built upon FMLI which uses Curses</div></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data"><a href="Ken_Arnold" title="Ken Arnold">Ken Arnold</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Initial release</th><td class="infobox-data">1978<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data"><a href="C_(programming_language)" title="C (programming language)">C</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data"><a href="Widget_toolkit" title="Widget toolkit">Widget toolkit</a></td></tr></tbody></table>
<p><b>curses</b> is a <a href="Computer_terminal" title="Computer terminal">terminal</a> control <a href="Library_(computer_science)" class="mw-redirect" title="Library (computer science)">library</a> for <a href="Unix-like" title="Unix-like">Unix-like</a> systems, enabling the construction of <a href="Text_user_interface" class="mw-redirect" title="Text user interface">text user interface</a> (TUI) applications.
</p><p>The name is a pun on the term "<a href="Cursor_(computers)" class="mw-redirect" title="Cursor (computers)">cursor</a> optimization". It is a library of functions that manage an application's display on character-cell terminals (e.g., <a href="VT100" title="VT100">VT100</a>).<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p><a href="Ncurses" title="Ncurses">ncurses</a> is the approved replacement for <a href="4.4BSD" class="mw-redirect" title="4.4BSD">4.4BSD</a> classic curses.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2></div>
<p>Using curses, programmers are able to write text-based applications without writing directly for any specific terminal type. The curses library on the executing system sends the correct control characters based on the terminal type. It provides an abstraction of one or more windows that maps onto the terminal screen. Each window is represented by a character matrix. The programmer sets up the desired appearance of each window, then tells the curses package to update the screen. The library determines a minimal set of changes that are needed to update the display and then executes these using the terminal's specific capabilities and control sequences.
</p><p>In short, this means that the programmer creates a character matrix of how the screen should look and lets curses handle the work.
</p><p>The curses <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">API</a> is described in several places.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Most implementations of curses use a database that can describe the capabilities of thousands of different terminals. There are a few implementations, such as PDCurses, which use specialized device drivers rather than a terminal database. Most implementations use <a href="Terminfo" title="Terminfo">terminfo</a>; some use <a href="Termcap" title="Termcap">termcap</a>. Curses has the advantage of back-portability to character-cell terminals and simplicity. For an application that does not require bit-mapped graphics or multiple fonts, an interface implementation using curses will usually be much simpler and faster than one using an <a href="X_Window_System" title="X Window System">X</a> toolkit.
</p>
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>The first curses library was written by <a href="Ken_Arnold" title="Ken Arnold">Ken Arnold</a> and originally released with <a href="Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a> UNIX, where it was used for several games, most notably <i><a href="Rogue_(computer_game)" class="mw-redirect" title="Rogue (computer game)">Rogue</a></i>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Arnold1977_5-0" class="reference"><a href="#cite_note-Arnold1977-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Some improvements were made to the BSD library in the 1990s as "4.4BSD" curses, e.g., to provide more than one type of video highlighting. However, those are not widely used.
</p><p>The name "curses" is a pun on <i>cursor optimization</i>.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> Sometimes it is incorrectly stated that curses was used by the <a href="Vi_(text_editor)" title="Vi (text editor)">vi</a> editor. In fact the code in curses that optimizes moving the cursor was borrowed from vi, which predated curses.<sup id="cite_ref-Arnold1977_5-1" class="reference"><a href="#cite_note-Arnold1977-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p><p>According to Goodheart, Ken Arnold's original implementation of curses started by reusing functions from the <a href="Termcap" title="Termcap">termcap</a> library, and adding to that.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> A few years later, <a href="Mary_Ann_Horton" title="Mary Ann Horton">Mary Ann Horton</a>, who had maintained the <a href="Vi_(text_editor)" title="Vi (text editor)">vi</a> and <a href="Termcap" title="Termcap">termcap</a> sources at <a href="University_of_California%2C_Berkeley" title="University of California, Berkeley">Berkeley</a>, went to <a href="AT%26T_Corporation" title="AT&T Corporation">AT&T Corporation</a> and made a different version using <a href="Terminfo" title="Terminfo">terminfo</a>, which became part of <a href="UNIX_System_III" title="UNIX System III">UNIX System III</a> and <a href="UNIX_System_V" title="UNIX System V">UNIX System V</a>. Due to licensing restrictions on the latter, the BSD and AT&T versions of the library were developed independently. In addition to the termcap/terminfo improvement, other improvements were made in the AT&T version:
</p>
<dl><dt>video highlighting (bold, underline)</dt>
<dd>The BSD version supported only <i>standout</i>.</dd>
<dt>line-drawing</dt>
<dd>The BSD version gave little support here.</dd>
<dt>colors</dt>
<dd>This was not supported in the BSD version.</dd></dl>
<p>AT&T curses development appears to have halted in the mid-1990s when X/Open Curses was defined.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> In 1995, BSD maintainer, <a href="Keith_Bostic_(software_engineer)" title="Keith Bostic (software engineer)">Keith Bostic</a>, officially deprecated the curses library in favor of <a href="Ncurses" title="Ncurses">ncurses</a>.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> Development of ncurses and PDCurses continues. A version of BSD curses continues to be maintained in the <a href="NetBSD" title="NetBSD">NetBSD</a> operating system (wide character support, termcap to terminfo migration, etc.).
</p>
<div class="mw-heading mw-heading3"><h3 id="pcurses_and_PDCurses">pcurses and PDCurses</h3></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="PDCurses" class="mw-redirect" title="PDCurses">PDCurses</a></div>
<p>Different lines of development started by imitating the AT&T curses, from at least three implementations: <b>pcurses</b> by <a href="Pavel_Curtis" title="Pavel Curtis">Pavel Curtis</a> (started in 1982), <b>PDCurses</b> (Public Domain curses) by Mark Hessling to support his editor <a href="The_Hessling_Editor" class="mw-redirect" title="The Hessling Editor">THE</a> (started in 1987) as well as <a href="Rexx" title="Rexx">Rexx</a>/Curses,<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> and <b>PC curses</b> (version 1.4 and earlier by Björn Larsson-based inspired by Pavel Curtis' library before 1990).<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="ncurses">ncurses</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Ncurses" title="Ncurses">ncurses</a></div>
<p><b>ncurses</b> (new curses) "originated as <b>pcurses</b><span class="nowrap"> </span>... and was re-issued as ncurses 1.8.1 in late 1993".<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> ncurses is the most widely known implementation of curses, and has motivated further development of other variations, such as BSD curses in the <a href="NetBSD" title="NetBSD">NetBSD</a> project.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Portability">Portability</h2></div>
<p>Although the ncurses library was initially developed under Linux, OpenBSD, FreeBSD, and NetBSD, it has been ported to many other ANSI/POSIX UNIX systems, mainly by Thomas Dickey. PDCurses, while not identical to ncurses, uses the same function calls and operates the same way as ncurses does except that PDCurses targets different devices, e.g., console windows for <a href="DOS" title="DOS">DOS</a>, <a href="Win32" class="mw-redirect" title="Win32">Win32</a>, <a href="OS/2" title="OS/2">OS/2</a>, as well as <a href="X11" class="mw-redirect" title="X11">X11</a>. Porting between the two is not difficult. For example, the <a href="Roguelike" title="Roguelike">roguelike</a> game <i><a href="Ancient_Domains_of_Mystery" title="Ancient Domains of Mystery">ADOM</a></i> was written for Linux and ncurses, later ported to DOS and PDCurses.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Screenshots">Screenshots</h2></div>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px">
<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:File"></span></div>
<div class="gallerytext">Color newsreader interface for <a href="Tin_(newsreader)" title="Tin (newsreader)">tin</a></div>
</li>
<li class="gallerybox" style="width: 155px">
<div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:File"></span></div>
<div class="gallerytext">Curses used in Jack</div>
</li>
</ul>
<div class="mw-heading mw-heading2"><h2 id="Applications">Applications</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Text-based_user_interface" title="Text-based user interface">Text-based user interface</a></div>
<p>Curses is designed to facilitate GUI-like functionality on a text-only device, such as a PC running in console mode, a hardware ANSI terminal, a <a href="Telnet" title="Telnet">Telnet</a> or <a href="Secure_Shell" title="Secure Shell">SSH</a> client, or similar. Curses-based software is software whose <a href="User_interface" title="User interface">user interface</a> is implemented through the curses library, or a compatible library (such as <a href="Ncurses" title="Ncurses">ncurses</a>).
</p><p>Curses-based programs often have a user interface that resembles a traditional graphical user interface, including '<a href="Widget_(computing)" class="mw-redirect" title="Widget (computing)">widgets</a>' such as text boxes and scrollable lists, rather than the <a href="Command_line_interface" class="mw-redirect" title="Command line interface">command line interface</a> (CLI) most commonly found on text-only devices. This can make them more user-friendly than a CLI-based program, while still being able to run on text-only devices. Curses-based software can also have a lighter resource footprint and operate on a wider range of systems (both in terms of hardware and software) than their GUI-based counterparts. This includes old pre-1990 machines along with modern embedded systems using text-only displays.
</p><p>Curses is most commonly associated with <a href="Unix-like" title="Unix-like">Unix-like</a> operating systems, although implementations for <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> also exist.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Conio.h" title="Conio.h">conio</a> – a similar idea, for <a href="DOS" title="DOS">DOS</a></li>
<li><a href="S-Lang" title="S-Lang">S-Lang</a> – an interpreted language with some related features</li>
<li><a href="SMG%24" class="mw-redirect" title="SMG$">SMG$</a> – a similar idea, for <a href="OpenVMS" title="OpenVMS">OpenVMS</a></li>
<li><a href="Newt_(programming_library)" title="Newt (programming library)">Newt</a> - a similar text UI library based on the <a href="S-Lang" title="S-Lang">slang library</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFCraddock,_David_L.2016" class="citation web cs1">Craddock, David L. (June 17, 2016). <a rel="nofollow" class="external text" href="https://episodiccontentmag.com/2016/06/17/rogue_chapter3">"Procedural Dungeons of Doom: The Making of Rogue – Chapter 3"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">May 18,</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFThomas_E._Dickey" class="citation web cs1">Thomas E. Dickey. <a rel="nofollow" class="external text" href="http://invisible-island.net/ncurses/ncurses.faq.html">"NCURSES - Frequently Asked Questions"</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">John Strang, <i>Programming with curses</i>, O'Reilly, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-937175-02-1</bdi></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFPeter_H._Salus1994" class="citation web cs1">Peter H. Salus (October 1994). <a rel="nofollow" class="external text" href="http://landley.net/history/mirror/unix/art3.htm">"The history of Unix is as much about collaboration as it is about technology"</a>. Byte.</cite></span>
</li>
<li id="cite_note-Arnold1977-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-Arnold1977_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Arnold1977_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFArnold1977" class="citation journal cs1">Arnold, K. C. R. C. (1977). "Screen Updating and Cursor Movement Optimization: A Library Package". University of California, Berkeley.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite journal}}</code>: </span><span class="cs1-visible-error citation-comment">Cite journal requires <code class="cs1-code">|journal=</code> (help)</span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFKenneth_C._R._C._ArnoldElan_Amir1992" class="citation web cs1">Kenneth C. R. C. Arnold; Elan Amir (December 1992). <a rel="nofollow" class="external text" href="http://www.mirbsd.org/cman/manPSD/19.curses.htm">"Screen Updating and Cursor Movement Optimization: A Library Package"</a>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite id="CITEREFThomas_E._Dickey" class="citation web cs1">Thomas E. Dickey. <a rel="nofollow" class="external text" href="http://invisible-island.net/ncurses/ncurses.faq.html#what_is_it">"NCURSES - Frequently Asked Questions"</a>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFGoodheart1991" class="citation book cs1">Goodheart, Berny (1991). <i>UNIX Curses Explained</i>. Prentice Hall. p. xi. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-931957-3</bdi>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.opengroup.org/onlinepubs/007908799/cursesix.html">"X/Open Curses, Issue 4 Version 2, Reference Pages"</a>. The Open Group. 1997.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite id="CITEREFEric_S._Raymond1995" class="citation web cs1"><a href="Eric_S._Raymond" title="Eric S. Raymond">Eric S. Raymond</a> (September 1, 1995). <a rel="nofollow" class="external text" href="https://www.linuxjournal.com/article/1124">"ncurses: Portable Screen-Handling for Linux"</a>. <a href="Linux_Journal" title="Linux Journal">Linux Journal</a><span class="reference-accessdate">. Retrieved <span class="nowrap">May 18,</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFMark_Hessling2008" class="citation web cs1">Mark Hessling (2008). <a rel="nofollow" class="external text" href="https://rexxcurses.sourceforge.net/index.html">"Rexx/Curses"</a>. <a href="SourceForge" title="SourceForge">SourceForge</a> project rexxcurses<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-02-10</span></span>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFF._Ellermann1993" class="citation web cs1">F. Ellermann (1993-07-26). <a rel="nofollow" class="external text" href="http://purl.net/xyzzy/dos/pccurses.zip">"CURSES.NEW in pccurses.zip"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-02-10</span></span>. <q>based on PC curses (version 1.4) written by Björn Larsson</q></cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite id="CITEREFBjörn_Larsson1990" class="citation web cs1">Björn Larsson (1990-01-14). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140223040754/http://read.pudn.com/downloads88/sourcecode/windows/339526/PCCUR/README.NOW__.htm">"README.NOW in pccurs14.zip"</a>. Archived from <a rel="nofollow" class="external text" href="http://read.pudn.com/downloads88/sourcecode/windows/339526/PCCUR/README.NOW__.htm">the original</a> on 2014-02-23<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-02-10</span></span>. <q>PCcurses is a port/rewrite of Pavel Curtis' [package]</q></cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite id="CITEREFThomas_E._Dickey1996" class="citation web cs1">Thomas E. Dickey (December 1996). <a rel="nofollow" class="external text" href="http://invisible-island.net/ncurses/">"NCURSES - New Curses"</a>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite id="CITEREFNetBSD_project2004" class="citation web cs1">NetBSD project (February 2004). <a rel="nofollow" class="external text" href="http://www.daemon-systems.org/man/curses_screen.3.html">"CURSES_SCREEN(3), NetBSD Library Functions Manual"</a>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite id="CITEREFRuibiao_Qiu2005" class="citation web cs1">Ruibiao Qiu (September 2005). <a rel="nofollow" class="external text" href="https://netbsd-soc.sourceforge.net/projects/wcurses/">"NetBSD-SoC: Wide Character Support in NetBSD curses Library"</a>.</cite></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite id="CITEREFThomas_Biskup1994–2007" class="citation web cs1">Thomas Biskup (1994–2007). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20071010020739/http://www.adom.de/adom/past.php3">"ADOM - The Past"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.adom.de/adom/past.php3">the original</a> on 2007-10-10<span class="reference-accessdate">. Retrieved <span class="nowrap">2007-11-16</span></span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite id="CITEREFThomas_Biskup1996" class="citation newsgroup cs1">Thomas Biskup (March 15, 1996). <a rel="nofollow" class="external text" href="https://groups.google.com/group/rec.games.roguelike.announce/browse_frm/thread/db2cae355715f608/bb2d17e5701ff977?lnk=st&q=adom+group%3Arec.games.roguelike.announce#bb2d17e5701ff977">"New Game: ADOM (MS-DOS, MS-Windows, and Linux only)"</a>. <a href="Usenet_newsgroup" title="Usenet newsgroup">Newsgroup</a>: <a rel="nofollow" class="external text" href="news:rec.games.roguelike.announce">rec.games.roguelike.announce</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2007-11-16</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://invisible-island.net/ncurses/man/">NCURSES - Manual Pages</a></li>
<li><a rel="nofollow" class="external text" href="http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Curses.pdf">Curses tutorial</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20050528211809/http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Curses.pdf">Archived</a> 2005-05-28 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> (<a href="Portable_Document_Format" class="mw-redirect" title="Portable Document Format">PDF</a> format)</li>
<li><a rel="nofollow" class="external text" href="https://pdcurses.sourceforge.net/">Public Domain Curses</a></li>
<li><a rel="nofollow" class="external text" href="https://rexxcurses.sourceforge.net/">Interface for Rexx programmers</a></li>
<li><a rel="nofollow" class="external text" href="http://www.ch-werner.de/ck/">Tcl Toolkit</a></li>
<li><a rel="nofollow" class="external text" href="http://www.opengroup.org/onlinepubs/007908799/cursesix.html">X/Open Curses</a></li>
<li><a rel="nofollow" class="external text" href="https://docs.python.org/library/curses.html">Curses for Python</a></li>
<li><a rel="nofollow" class="external text" href="http://netbsd.gw.com/cgi-bin/man-cgi?curses+3+NetBSD-current">NetBSD Curses main manual page</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140808043722/http://netbsd.gw.com/cgi-bin/man-cgi?curses+3+NetBSD-current">Archived</a> 2014-08-08 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></li>
<li><a rel="nofollow" class="external text" href="https://pubs.opengroup.org/onlinepubs/009638999/toc.pdf">X/Open Curses, Issue 4, Version 2</a>, 1996, opengroup.org</li>
<li><a rel="nofollow" class="external text" href="https://pubs.opengroup.org/onlinepubs/9699909599/toc.pdf">X/Open Curses, Issue 7</a>, 2009, opengroup.org</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-03" href="https://en.wikipedia.org/wiki/?title=Curses_(programming_library)&oldid=1298594224">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>